In computer operating systems and related software, a job scheduler (or “process scheduler”) is an application that manages the distribution of work (e.g., in the form of jobs or processes) to different computing resources (e.g., processor cores). Current job schedulers have a performance loss when using multiple core systems. The loss of performance may be due to the use of operating system locks (e.g., mutexes), which are used to manage multiple cores accessing common data structures (e.g., concurrent data structures) and which put waiting threads to sleep. One such data structure is a job queue, which has producers of jobs (e.g., usually applications) on the input side and consumers of jobs (e.g., processor cores) on the output side of the queue. Inefficiencies can occur when multiple entities (e.g., multiple processors, processor cores, applications, or threads) try to simultaneously modify the shared queue data structure (e.g., because the locks only allow one entity to read/write to the structure at the same time, while all other entities must wait for access).
It will be noted that throughout the appended drawings, like features are identified by like reference numerals.